<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>YDLIDAR SDK: include/SimpleSocket.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ydliar.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">YDLIDAR SDK
   &#160;<span id="projectnumber">V1.3.6</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">SimpleSocket.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">/*                                                                           */</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">/* SimpleSocket.h - Simple Socket base class decleration.                    */</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">/*                                                                           */</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">/* Author : Mark Carrier (mark@carrierlabs.com)                              */</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">/*                                                                           */</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">/* Copyright (c) 2007-2009 CarrierLabs, LLC.  All rights reserved.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * modification, are permitted provided that the following conditions</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * are met:</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *    notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *    notice, this list of conditions and the following disclaimer in</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *    the documentation and/or other materials provided with the</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *    distribution.</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * 3. The name of the author may not be used to endorse or promote products</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *    derived from this software without specific prior written permission.</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * 4. The name &quot;CarrierLabs&quot; must not be used to</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *    endorse or promote products derived from this software without</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *    prior written permission. For written permission, please contact</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *    mark@carrierlabs.com.</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY MARK CARRIER ``AS IS&#39;&#39; AND ANY</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL MARK CARRIER OR</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"> * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment"> * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment"> * OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment"> *----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#ifndef __SOCKET_H__</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#define __SOCKET_H__</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#if defined(__linux__) || defined (_DARWIN)</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &lt;arpa/inet.h&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &lt;netinet/tcp.h&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &lt;netinet/ip.h&gt;</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &lt;netdb.h&gt;</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &lt;linux/if_packet.h&gt;</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &lt;linux/if_ether.h&gt;</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#include &lt;linux/if.h&gt;</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#include &lt;sys/sendfile.h&gt;</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#ifdef _DARWIN</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#include &lt;net/if.h&gt;</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#if defined(__linux__) || defined (_DARWIN)</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">#include &lt;sys/time.h&gt;</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#include &lt;sys/uio.h&gt;</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#include &lt;sys/ioctl.h&gt;</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#if defined(_WIN32)</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#include &lt;io.h&gt;</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#include &lt;winsock2.h&gt;</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#include &lt;Ws2tcpip.h&gt;</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor"># pragma warning(disable: 4786)</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="preprocessor"># pragma  comment(lib, &quot;ws2_32.lib&quot;)</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor">#define IPTOS_LOWDELAY  0x10</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#include &quot;Host.h&quot;</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#include &quot;StatTimer.h&quot;</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#include &quot;ChannelDevice.h&quot;</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">//-----------------------------------------------------------------------------</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// General class macro definitions and typedefs</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">//-----------------------------------------------------------------------------</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor">#ifndef INVALID_SOCKET</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#define INVALID_SOCKET    ~(0)</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="preprocessor">#define SOCKET_SENDFILE_BLOCKSIZE 8192</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceydlidar.html">ydlidar</a> {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html">  114</a></span>&#160;<span class="keyword">class </span><a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a> : <span class="keyword">public</span> <a class="code" href="class_channel_device.html">ChannelDevice</a>{</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eee">  117</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    {</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeaeb0f1c6410f5b9f5b03274e9d90592fd">  119</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeaeb0f1c6410f5b9f5b03274e9d90592fd">Receives</a> = SHUT_RD, </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeea5f942b5d08c08cba6da878fd6438a07b">  120</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeea5f942b5d08c08cba6da878fd6438a07b">Sends</a> = SHUT_WR,    </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeadc8fe9b07e02af335349800cb62390f2">  121</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeadc8fe9b07e02af335349800cb62390f2">Both</a> = SHUT_RDWR    </div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    } <a class="code" href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eee">CShutdownMode</a>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0b">  125</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    {</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0bafcae5434c7863157bdfd65328b5df060">  127</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0bafcae5434c7863157bdfd65328b5df060">SocketTypeInvalid</a> = 0,   </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babc8a6304e4ecb9b329b2cb94cd0b26cd">  128</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babc8a6304e4ecb9b329b2cb94cd0b26cd">SocketTypeTcp</a>,       </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0ba75043b038b2675b576e45beaabee7208">  129</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0ba75043b038b2675b576e45beaabee7208">SocketTypeUdp</a>,       </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baf827f1847e812176cac6be3b05990ee3">  130</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baf827f1847e812176cac6be3b05990ee3">SocketTypeTcp6</a>,      </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babfda0409497645b040b4daf8f9d6bfac">  131</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babfda0409497645b040b4daf8f9d6bfac">SocketTypeUdp6</a>,      </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baa4b38ca3c891ff4c3f7e89d691f90a24">  132</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baa4b38ca3c891ff4c3f7e89d691f90a24">SocketTypeRaw</a>        </div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    } <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0b">CSocketType</a>;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482">  136</a></span>&#160;    <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    {</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a44eae3572de12463261d8db6afc61093">  138</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a44eae3572de12463261d8db6afc61093">SocketError</a> = -1,          </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a8f09072cc1be7857d94f4481a0ed40b2">  139</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a8f09072cc1be7857d94f4481a0ed40b2">SocketSuccess</a> = 0,         </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a30e149bbbadcdd34ceb93084abbf3de6">  140</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a30e149bbbadcdd34ceb93084abbf3de6">SocketInvalidSocket</a>,       </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a5684444ef284a45fad2fe5fb83d57f8c">  141</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a5684444ef284a45fad2fe5fb83d57f8c">SocketInvalidAddress</a>,      </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ae0baed56e8fff1a431ad0f2405f550ad">  142</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ae0baed56e8fff1a431ad0f2405f550ad">SocketInvalidPort</a>,         </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a17ea51e148357465a7b22a1fd36a0c80">  143</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a17ea51e148357465a7b22a1fd36a0c80">SocketConnectionRefused</a>,   </div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac6918e17bc0cae682c3db90dc105f7b2">  144</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac6918e17bc0cae682c3db90dc105f7b2">SocketTimedout</a>,            </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a7a4657dd7a51527dbe81cdbf744279e3">  145</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a7a4657dd7a51527dbe81cdbf744279e3">SocketEwouldblock</a>,         </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a1ef4d2d55b89f12776c358ec1b0da5f6">  146</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a1ef4d2d55b89f12776c358ec1b0da5f6">SocketNotconnected</a>,        </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a68a97c79867dce992619e6dee347a037">  147</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a68a97c79867dce992619e6dee347a037">SocketEinprogress</a>,         </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a2e600d679e03f1761a379765368b1f36">  148</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a2e600d679e03f1761a379765368b1f36">SocketInterrupted</a>,         </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482aec8ee7c99abfe40eac82ddd7db519856">  149</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482aec8ee7c99abfe40eac82ddd7db519856">SocketConnectionAborted</a>,   </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac71c28b4f21becf7e75da8e7c08f734c">  150</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac71c28b4f21becf7e75da8e7c08f734c">SocketProtocolError</a>,       </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a21794c9689ccf683d069c11f2d8317cf">  151</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a21794c9689ccf683d069c11f2d8317cf">SocketFirewallError</a>,       </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad960e4fd8ecee3c5fa5a8142263c0699">  152</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad960e4fd8ecee3c5fa5a8142263c0699">SocketInvalidSocketBuffer</a>, </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a79e6463b44f6e30a482d2571360e63a4">  153</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a79e6463b44f6e30a482d2571360e63a4">SocketConnectionReset</a>,     </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a38211a5d3a9d33793a0b26eae5e0aea7">  154</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a38211a5d3a9d33793a0b26eae5e0aea7">SocketAddressInUse</a>,        </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad20b7ca3362a242d07be421b27788ebe">  155</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad20b7ca3362a242d07be421b27788ebe">SocketInvalidPointer</a>,      </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a43c5eccc15f81ce9cf4ca91dd306e71a">  156</a></span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a43c5eccc15f81ce9cf4ca91dd306e71a">SocketEunknown</a>             </div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    } <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482">CSocketError</a>;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a>(CSocketType type = <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babc8a6304e4ecb9b329b2cb94cd0b26cd">SocketTypeTcp</a>);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a>(<a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a> &amp;socket);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a>()</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    {</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">m_pBuffer</a> != NULL)</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        {</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;            <span class="keyword">delete</span> [] <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">m_pBuffer</a>;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;            <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">m_pBuffer</a> = NULL;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        }</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    };</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#ae50622a90672c5c697f2ec7a3a7eec06">Initialize</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#afbb30cef80ae0faec59403184cab3bb1">Close</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5b7672c71bc8d8431d36974b946103d7">Shutdown</a>(CShutdownMode nShutdown);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a78880461b93d32c9dd5ebaaa21410996">  196</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a78880461b93d32c9dd5ebaaa21410996">Select</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a78880461b93d32c9dd5ebaaa21410996">Select</a>(0,0);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    };</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a78880461b93d32c9dd5ebaaa21410996">Select</a>(int32_t nTimeoutSec, int32_t nTimeoutUSec);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">int</span> WaitForData(<span class="keywordtype">size_t</span> data_count, uint32_t timeout, <span class="keywordtype">size_t</span> * returned_size);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a901d293660fc2856cbc18885e5ebecfb">  215</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a901d293660fc2856cbc18885e5ebecfb">IsSocketValid</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordflow">return</span> (m_socket != <a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a44eae3572de12463261d8db6afc61093">SocketError</a>);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    };</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a80785e9658ecd6e118e9876bb222b074">TranslateSocketError</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classydlidar_1_1_c_simple_socket.html#a0ee13f2a8edcbf5aab5ad512cc35ad67">DescribeError</a>(CSocketError err);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *DescribeError() {</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        <span class="keywordflow">return</span> DescribeError(<a class="code" href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">m_socketErrno</a>);</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    };</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="keyword">virtual</span> int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a637ff7510be4ea144a3a4d062260a6a9">Receive</a>(int32_t nMaxBytes = 1, uint8_t * pBuffer = 0);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keyword">virtual</span> int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a96f15f994bfb576630e2c070ec8dd9da">Send</a>(<span class="keyword">const</span> uint8_t *pBuf, <span class="keywordtype">size_t</span> bytesToSend);</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="keyword">virtual</span> int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a96f15f994bfb576630e2c070ec8dd9da">Send</a>(<span class="keyword">const</span> <span class="keyword">struct</span> iovec *sendVector, int32_t nNumItems);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <span class="keyword">virtual</span> int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#ad82afc017cc86ae8e69e2ee20d669843">SendFile</a>(int32_t nOutFd, int32_t nInFd, off_t *pOffset, int32_t nCount);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a89dc97d81d75164b88c08c9cfa96298a">  275</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a89dc97d81d75164b88c08c9cfa96298a">IsNonblocking</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classydlidar_1_1_c_simple_socket.html#a60b20253d942326ef40f1fa999fa532c">m_bIsBlocking</a> == <span class="keyword">false</span>);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    };</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a51c89ece94e5c0cd58f246307de8a440">SetBlocking</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a17b8048b915d6429415d2014f7b3329d">SetNonblocking</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#ae3011ed1a5f60ecadd3fe3bbcd80bb9c">  291</a></span>&#160;    uint8_t *<a class="code" href="classydlidar_1_1_c_simple_socket.html#ae3011ed1a5f60ecadd3fe3bbcd80bb9c">GetData</a>(<span class="keywordtype">void</span>)  {</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">m_pBuffer</a>;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    };</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a6b37c4ce4d3e48afd2f7c93f00d39a05">  298</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a6b37c4ce4d3e48afd2f7c93f00d39a05">GetBytesReceived</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a3ea11ae9ab50c35a50adcac1e793f3b0">m_nBytesReceived</a>;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    };</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a799f9d31c9df14706e1c3820db16da64">  305</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a799f9d31c9df14706e1c3820db16da64">GetBytesSent</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a258dbbc96bc663d9ca0c15bfb54d1406">m_nBytesSent</a>;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    };</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5cac43bde00d9d551df09adf18055f94">SetOptionLinger</a>(<span class="keywordtype">bool</span> bEnable, uint16_t nTime);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a70dc7bedc18197071bf6e1f5f38f606b">SetOptionReuseAddr</a>();</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a6f181044a6690b5c90c1a1223d77e013">  335</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a6f181044a6690b5c90c1a1223d77e013">GetConnectTimeoutSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">m_stConnectTimeout</a>.tv_sec;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    };</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a78257e60b158e889953b3002842b2225">  342</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a78257e60b158e889953b3002842b2225">GetConnectTimeoutUSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">m_stConnectTimeout</a>.tv_usec;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    };</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a1192d975d7be1ad2561b186841a30fe1">  356</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a1192d975d7be1ad2561b186841a30fe1">SetConnectTimeout</a>(int32_t nConnectTimeoutSec, int32_t nConnectTimeoutUsec = 0)</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    {</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">m_stConnectTimeout</a>.tv_sec = nConnectTimeoutSec;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">m_stConnectTimeout</a>.tv_usec = nConnectTimeoutUsec;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    };</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a3931df9cb5a1e8e9f113f40918e23fe6">  365</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a3931df9cb5a1e8e9f113f40918e23fe6">GetReceiveTimeoutSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a564833529baaa1d51af1429d3dcf8688">m_stRecvTimeout</a>.tv_sec;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    };</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a0601177c57fbb8080bcef0ca20d3f2af">  372</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a0601177c57fbb8080bcef0ca20d3f2af">GetReceiveTimeoutUSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a564833529baaa1d51af1429d3dcf8688">m_stRecvTimeout</a>.tv_usec;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    };</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a95f4d0ff2f546f6b082ddfb4e7107ba8">SetReceiveTimeout</a>(int32_t nRecvTimeoutSec, int32_t nRecvTimeoutUsec = 0);</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a1b41d3ea37453824e78b82573cc95784">SetMulticast</a>(<span class="keywordtype">bool</span> bEnable, uint8_t multicastTTL = 1);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a220ea5b192f922d27c0598db9032687c">  397</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a220ea5b192f922d27c0598db9032687c">GetMulticast</a>() {</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#ab78977157db65f4475d52f1c5086f54b">m_bIsMulticast</a>;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    };</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#aa23681b9ebd4727e003235da8d0b8bf8">BindInterface</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pInterface);</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aaa1240da9f56fa394555f1e89f53a437">  408</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#aaa1240da9f56fa394555f1e89f53a437">GetSendTimeoutSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a73629951a9557f9f1c574191f1e1003c">m_stSendTimeout</a>.tv_sec;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    };</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#af76a68329b5c244816c0710912d4d976">  415</a></span>&#160;    int32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#af76a68329b5c244816c0710912d4d976">GetSendTimeoutUSec</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        <span class="keywordflow">return</span>  <a class="code" href="classydlidar_1_1_c_simple_socket.html#a73629951a9557f9f1c574191f1e1003c">m_stSendTimeout</a>.tv_usec;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    };</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a971aadd919b44db33240d9e66d002f22">SetSendTimeout</a>(int32_t nSendTimeoutSec, int32_t nSendTimeoutUsec = 0);</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aad7b2966c945ef4bf2f7db43cf0b6a0a">  428</a></span>&#160;    CSocketError <a class="code" href="classydlidar_1_1_c_simple_socket.html#aad7b2966c945ef4bf2f7db43cf0b6a0a">GetSocketError</a>(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">m_socketErrno</a>;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    };</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a10ec98a6f67603f972084b5a6ba02b16">  434</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a10ec98a6f67603f972084b5a6ba02b16">GetTotalTimeMs</a>() {</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#af0bf1b384ce7429d22bf9da6b9c0e51a">m_timer</a>.GetMilliSeconds();</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    };</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aba125f0248c625f1eb339dab9053b7dc">  440</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#aba125f0248c625f1eb339dab9053b7dc">GetTotalTimeUsec</a>() {</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#af0bf1b384ce7429d22bf9da6b9c0e51a">m_timer</a>.GetMicroSeconds();</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    };</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a0348de038f680b7b5801b8138a51e843">GetSocketDscp</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a8c373c3f300e588ea048773cb1457447">SetSocketDscp</a>(<span class="keywordtype">int</span> nDscp);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a9d6a7a5e3dcb742c07114d8a2dbf547f">  457</a></span>&#160;    SOCKET <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9d6a7a5e3dcb742c07114d8a2dbf547f">GetSocketDescriptor</a>() {</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="keywordflow">return</span> m_socket;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    };</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a9a0d712e549884b71a2784a1e3ed6396">  463</a></span>&#160;    CSocketType <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9a0d712e549884b71a2784a1e3ed6396">GetSocketType</a>() {</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a247125bf95be28d02f7f971d490c444f">m_nSocketType</a>;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    };</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a014e2ed02e7df2f68cd3376de2f5fb3a">  468</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a014e2ed02e7df2f68cd3376de2f5fb3a">SetSocketType</a>(<span class="keyword">const</span> CSocketType&amp; type) {</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#a247125bf95be28d02f7f971d490c444f">m_nSocketType</a> = type;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    }</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#af4fe45d2420148f74ec788bf25848513">  474</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classydlidar_1_1_c_simple_socket.html#af4fe45d2420148f74ec788bf25848513">GetClientAddr</a>() {</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="keywordflow">return</span> inet_ntoa(<a class="code" href="classydlidar_1_1_c_simple_socket.html#a0f912fad7557934ee8a696acd1808085">m_stClientSockaddr</a>.sin_addr);</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    };</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a1688bd7b09b08439dc6ed04e0ac3a2ee">  480</a></span>&#160;    uint16_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a1688bd7b09b08439dc6ed04e0ac3a2ee">GetClientPort</a>() {</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a0f912fad7557934ee8a696acd1808085">m_stClientSockaddr</a>.sin_port;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    };</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a82110576384fa8d09439621eeff8facc">  486</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classydlidar_1_1_c_simple_socket.html#a82110576384fa8d09439621eeff8facc">GetServerAddr</a>() {</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        <span class="keywordflow">return</span> inet_ntoa(<a class="code" href="classydlidar_1_1_c_simple_socket.html#a89c5a0ceb502df3b9e54982424c1d2ef">m_stServerSockaddr</a>.sin_addr);</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    };</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#ade340bc665e64678c122f51d0799db9a">  492</a></span>&#160;    uint16_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#ade340bc665e64678c122f51d0799db9a">GetServerPort</a>() {</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;        <span class="keywordflow">return</span> ntohs(<a class="code" href="classydlidar_1_1_c_simple_socket.html#a89c5a0ceb502df3b9e54982424c1d2ef">m_stServerSockaddr</a>.sin_port);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    };</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a9003a5b1b8514126f2716a631093ede7">  499</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9003a5b1b8514126f2716a631093ede7">GetReceiveWindowSize</a>() {</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;        <span class="keywordflow">return</span> GetWindowSize(SO_RCVBUF);</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    };</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a748ad24b067f4675b778e580a7780279">  506</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a748ad24b067f4675b778e580a7780279">GetSendWindowSize</a>() {</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        <span class="keywordflow">return</span> GetWindowSize(SO_SNDBUF);</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    };</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a351356b98a5c4cfa87ec0805e88dfcb8">  513</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#a351356b98a5c4cfa87ec0805e88dfcb8">SetReceiveWindowSize</a>(uint32_t nWindowSize) {</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        <span class="keywordflow">return</span> SetWindowSize(SO_RCVBUF, nWindowSize);</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;    };</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aec6cb8b7c2f0ac279a31ccc003828d34">  520</a></span>&#160;    uint32_t <a class="code" href="classydlidar_1_1_c_simple_socket.html#aec6cb8b7c2f0ac279a31ccc003828d34">SetSendWindowSize</a>(uint32_t nWindowSize) {</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        <span class="keywordflow">return</span> SetWindowSize(SO_SNDBUF, nWindowSize);</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    };</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a91843dc1e8c8026316bcc9e4617c014e">DisableNagleAlgoritm</a>();</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a70aa0a4930465ef1fe4404ba9cc25a8f">EnableNagleAlgoritm</a>();</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Open(<span class="keyword">const</span> <span class="keywordtype">char</span> *pAddr, uint16_t nPort){<span class="keywordflow">return</span> <span class="keyword">true</span>;}</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> bindport(<span class="keyword">const</span> <span class="keywordtype">char</span>*, uint32_t );</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> open();</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isOpen();</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> closePort();</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> flush();</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">int</span> waitfordata(<span class="keywordtype">size_t</span> data_count,uint32_t timeout = -1, <span class="keywordtype">size_t</span> * returned_size = NULL);</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> writeData(<span class="keyword">const</span> uint8_t * data, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> readData(uint8_t * data, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a09e8344057c248952650cb408c791520">  554</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#a09e8344057c248952650cb408c791520">SetSocketError</a>(<a class="code" href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482">CSimpleSocket::CSocketError</a> error) {</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        <a class="code" href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">m_socketErrno</a> = error;</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    };</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aa77bc8daa8eaca86d52ba2217d0fbb21">  560</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#aa77bc8daa8eaca86d52ba2217d0fbb21">SetSocketHandle</a>(SOCKET socket) {</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        m_socket = socket;</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    };</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classydlidar_1_1_c_simple_socket.html#ae51c4b3a445b2c1d997328d7f1234db4">Flush</a>();</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    uint32_t GetWindowSize(uint32_t nOptionName);</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    uint32_t SetWindowSize(uint32_t nOptionName, uint32_t nWindowSize);</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    int32_t Writev(<span class="keyword">const</span> <span class="keyword">struct</span> iovec *pVector, <span class="keywordtype">size_t</span> nCount);</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;    <a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a> *operator=(<a class="code" href="classydlidar_1_1_c_simple_socket.html">CSimpleSocket</a> &amp;socket);</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    SOCKET               m_socket;            </div><div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">  595</a></span>&#160;    CSocketError         <a class="code" href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">m_socketErrno</a>;       </div><div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">  596</a></span>&#160;    uint8_t              *<a class="code" href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">m_pBuffer</a>;           </div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a7b5c3bc1ba9941ffc43f3e5adbfa89a7">  597</a></span>&#160;    int32_t              <a class="code" href="classydlidar_1_1_c_simple_socket.html#a7b5c3bc1ba9941ffc43f3e5adbfa89a7">m_nBufferSize</a>;       </div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a96f837fb21ff5b902578aec851d878d7">  598</a></span>&#160;    int32_t              <a class="code" href="classydlidar_1_1_c_simple_socket.html#a96f837fb21ff5b902578aec851d878d7">m_nSocketDomain</a>;     </div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a247125bf95be28d02f7f971d490c444f">  599</a></span>&#160;    CSocketType          <a class="code" href="classydlidar_1_1_c_simple_socket.html#a247125bf95be28d02f7f971d490c444f">m_nSocketType</a>;       </div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a3ea11ae9ab50c35a50adcac1e793f3b0">  600</a></span>&#160;    int32_t              <a class="code" href="classydlidar_1_1_c_simple_socket.html#a3ea11ae9ab50c35a50adcac1e793f3b0">m_nBytesReceived</a>;    </div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a258dbbc96bc663d9ca0c15bfb54d1406">  601</a></span>&#160;    int32_t              <a class="code" href="classydlidar_1_1_c_simple_socket.html#a258dbbc96bc663d9ca0c15bfb54d1406">m_nBytesSent</a>;        </div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a2d32e0547dc9c03308b7af0948a66fef">  602</a></span>&#160;    uint32_t             <a class="code" href="classydlidar_1_1_c_simple_socket.html#a2d32e0547dc9c03308b7af0948a66fef">m_nFlags</a>;            </div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a60b20253d942326ef40f1fa999fa532c">  603</a></span>&#160;    <span class="keywordtype">bool</span>                 <a class="code" href="classydlidar_1_1_c_simple_socket.html#a60b20253d942326ef40f1fa999fa532c">m_bIsBlocking</a>;       </div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#ab78977157db65f4475d52f1c5086f54b">  604</a></span>&#160;    <span class="keywordtype">bool</span>                 <a class="code" href="classydlidar_1_1_c_simple_socket.html#ab78977157db65f4475d52f1c5086f54b">m_bIsMulticast</a>;      </div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">  605</a></span>&#160;    <span class="keyword">struct </span>timeval       <a class="code" href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">m_stConnectTimeout</a>;  </div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a564833529baaa1d51af1429d3dcf8688">  606</a></span>&#160;    <span class="keyword">struct </span>timeval       <a class="code" href="classydlidar_1_1_c_simple_socket.html#a564833529baaa1d51af1429d3dcf8688">m_stRecvTimeout</a>;     </div><div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a73629951a9557f9f1c574191f1e1003c">  607</a></span>&#160;    <span class="keyword">struct </span>timeval       <a class="code" href="classydlidar_1_1_c_simple_socket.html#a73629951a9557f9f1c574191f1e1003c">m_stSendTimeout</a>;     </div><div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a89c5a0ceb502df3b9e54982424c1d2ef">  608</a></span>&#160;    <span class="keyword">struct </span>sockaddr_in   <a class="code" href="classydlidar_1_1_c_simple_socket.html#a89c5a0ceb502df3b9e54982424c1d2ef">m_stServerSockaddr</a>;  </div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a0f912fad7557934ee8a696acd1808085">  609</a></span>&#160;    <span class="keyword">struct </span>sockaddr_in   <a class="code" href="classydlidar_1_1_c_simple_socket.html#a0f912fad7557934ee8a696acd1808085">m_stClientSockaddr</a>;  </div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a798250958649e5cc5871cecb0a9bde39">  610</a></span>&#160;    <span class="keyword">struct </span>sockaddr_in   <a class="code" href="classydlidar_1_1_c_simple_socket.html#a798250958649e5cc5871cecb0a9bde39">m_stMulticastGroup</a>;  </div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#ad5725db3e331a9c209ee28588e732d96">  611</a></span>&#160;    <span class="keyword">struct </span>linger        <a class="code" href="classydlidar_1_1_c_simple_socket.html#ad5725db3e331a9c209ee28588e732d96">m_stLinger</a>;          </div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#af0bf1b384ce7429d22bf9da6b9c0e51a">  612</a></span>&#160;    <a class="code" href="class_c_stat_timer.html">CStatTimer</a>           <a class="code" href="classydlidar_1_1_c_simple_socket.html#af0bf1b384ce7429d22bf9da6b9c0e51a">m_timer</a>;             </div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;<span class="preprocessor">#if defined(_WIN32)</span></div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;    WSADATA              m_hWSAData;          </div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a5ddc43e6d8f08a169d9950b7755ae6e2">  616</a></span>&#160;    fd_set               <a class="code" href="classydlidar_1_1_c_simple_socket.html#a5ddc43e6d8f08a169d9950b7755ae6e2">m_writeFds</a>;          </div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a07ec634e790ac3c281966523d30623a5">  617</a></span>&#160;    fd_set               <a class="code" href="classydlidar_1_1_c_simple_socket.html#a07ec634e790ac3c281966523d30623a5">m_readFds</a>;           </div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#a95270a1d3db9e0f14fb68c3d39b1b658">  618</a></span>&#160;    fd_set               <a class="code" href="classydlidar_1_1_c_simple_socket.html#a95270a1d3db9e0f14fb68c3d39b1b658">m_errorFds</a>;          </div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="classydlidar_1_1_c_simple_socket.html#acefd54fe713934a5b4ba634f044c3fba">  620</a></span>&#160;    std::string          <a class="code" href="classydlidar_1_1_c_simple_socket.html#acefd54fe713934a5b4ba634f044c3fba">m_addr</a>;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    uint32_t             m_port;</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <span class="keywordtype">bool</span>                 m_open;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;};</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;}</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*  __SOCKET_H__  */</span><span class="preprocessor"></span></div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;</div><div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ad82afc017cc86ae8e69e2ee20d669843"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ad82afc017cc86ae8e69e2ee20d669843">ydlidar::CSimpleSocket::SendFile</a></div><div class="ttdeci">virtual int32_t SendFile(int32_t nOutFd, int32_t nInFd, off_t *pOffset, int32_t nCount)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:931</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0baf827f1847e812176cac6be3b05990ee3"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baf827f1847e812176cac6be3b05990ee3">ydlidar::CSimpleSocket::SocketTypeTcp6</a></div><div class="ttdoc">Defines socket as IPv6 TCP socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:130</div></div>
<div class="ttc" id="namespaceydlidar_html"><div class="ttname"><a href="namespaceydlidar.html">ydlidar</a></div><div class="ttdef"><b>Definition:</b> ActiveSocket.h:48</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a7eae391e0dcbafd740488b9a269c8eeea5f942b5d08c08cba6da878fd6438a07b"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeea5f942b5d08c08cba6da878fd6438a07b">ydlidar::CSimpleSocket::Sends</a></div><div class="ttdoc">Shutdown active socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:120</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a0348de038f680b7b5801b8138a51e843"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a0348de038f680b7b5801b8138a51e843">ydlidar::CSimpleSocket::GetSocketDscp</a></div><div class="ttdeci">int GetSocketDscp(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:294</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482aec8ee7c99abfe40eac82ddd7db519856"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482aec8ee7c99abfe40eac82ddd7db519856">ydlidar::CSimpleSocket::SocketConnectionAborted</a></div><div class="ttdoc">The connection has been aborted. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:149</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_af76a68329b5c244816c0710912d4d976"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#af76a68329b5c244816c0710912d4d976">ydlidar::CSimpleSocket::GetSendTimeoutUSec</a></div><div class="ttdeci">int32_t GetSendTimeoutUSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:415</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a78880461b93d32c9dd5ebaaa21410996"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a78880461b93d32c9dd5ebaaa21410996">ydlidar::CSimpleSocket::Select</a></div><div class="ttdeci">virtual bool Select(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:196</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a7b5c3bc1ba9941ffc43f3e5adbfa89a7"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a7b5c3bc1ba9941ffc43f3e5adbfa89a7">ydlidar::CSimpleSocket::m_nBufferSize</a></div><div class="ttdeci">int32_t m_nBufferSize</div><div class="ttdoc">internal send/receive buffer </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:597</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a07ec634e790ac3c281966523d30623a5"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a07ec634e790ac3c281966523d30623a5">ydlidar::CSimpleSocket::m_readFds</a></div><div class="ttdeci">fd_set m_readFds</div><div class="ttdoc">write file descriptor set </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:617</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0babfda0409497645b040b4daf8f9d6bfac"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babfda0409497645b040b4daf8f9d6bfac">ydlidar::CSimpleSocket::SocketTypeUdp6</a></div><div class="ttdoc">Defines socket as IPv6 UDP socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:131</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a6b37c4ce4d3e48afd2f7c93f00d39a05"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a6b37c4ce4d3e48afd2f7c93f00d39a05">ydlidar::CSimpleSocket::GetBytesReceived</a></div><div class="ttdeci">int32_t GetBytesReceived(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:298</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_af0bf1b384ce7429d22bf9da6b9c0e51a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#af0bf1b384ce7429d22bf9da6b9c0e51a">ydlidar::CSimpleSocket::m_timer</a></div><div class="ttdeci">CStatTimer m_timer</div><div class="ttdoc">linger flag </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:612</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a79e6463b44f6e30a482d2571360e63a4"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a79e6463b44f6e30a482d2571360e63a4">ydlidar::CSimpleSocket::SocketConnectionReset</a></div><div class="ttdoc">Connection was forcibly closed by the remote host. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:153</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a1688bd7b09b08439dc6ed04e0ac3a2ee"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a1688bd7b09b08439dc6ed04e0ac3a2ee">ydlidar::CSimpleSocket::GetClientPort</a></div><div class="ttdeci">uint16_t GetClientPort()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:480</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a799f9d31c9df14706e1c3820db16da64"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a799f9d31c9df14706e1c3820db16da64">ydlidar::CSimpleSocket::GetBytesSent</a></div><div class="ttdeci">int32_t GetBytesSent(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:305</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ae3011ed1a5f60ecadd3fe3bbcd80bb9c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ae3011ed1a5f60ecadd3fe3bbcd80bb9c">ydlidar::CSimpleSocket::GetData</a></div><div class="ttdeci">uint8_t * GetData(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:291</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0b"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0b">ydlidar::CSimpleSocket::CSocketType</a></div><div class="ttdeci">CSocketType</div><div class="ttdoc">Defines the socket types defined by CSimpleSocket class. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:125</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a68a97c79867dce992619e6dee347a037"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a68a97c79867dce992619e6dee347a037">ydlidar::CSimpleSocket::SocketEinprogress</a></div><div class="ttdoc">Socket is non-blocking and the connection cannot be completed immediately. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:147</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a7a4657dd7a51527dbe81cdbf744279e3"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a7a4657dd7a51527dbe81cdbf744279e3">ydlidar::CSimpleSocket::SocketEwouldblock</a></div><div class="ttdoc">Operation would block if socket were blocking. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:145</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aad7b2966c945ef4bf2f7db43cf0b6a0a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aad7b2966c945ef4bf2f7db43cf0b6a0a">ydlidar::CSimpleSocket::GetSocketError</a></div><div class="ttdeci">CSocketError GetSocketError(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:428</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a798250958649e5cc5871cecb0a9bde39"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a798250958649e5cc5871cecb0a9bde39">ydlidar::CSimpleSocket::m_stMulticastGroup</a></div><div class="ttdeci">struct sockaddr_in m_stMulticastGroup</div><div class="ttdoc">client address </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:610</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a901d293660fc2856cbc18885e5ebecfb"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a901d293660fc2856cbc18885e5ebecfb">ydlidar::CSimpleSocket::IsSocketValid</a></div><div class="ttdeci">virtual bool IsSocketValid(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:215</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a1b41d3ea37453824e78b82573cc95784"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a1b41d3ea37453824e78b82573cc95784">ydlidar::CSimpleSocket::SetMulticast</a></div><div class="ttdeci">bool SetMulticast(bool bEnable, uint8_t multicastTTL=1)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:245</div></div>
<div class="ttc" id="class_channel_device_html"><div class="ttname"><a href="class_channel_device.html">ChannelDevice</a></div><div class="ttdef"><b>Definition:</b> ChannelDevice.h:4</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a9003a5b1b8514126f2716a631093ede7"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a9003a5b1b8514126f2716a631093ede7">ydlidar::CSimpleSocket::GetReceiveWindowSize</a></div><div class="ttdeci">uint32_t GetReceiveWindowSize()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:499</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a70aa0a4930465ef1fe4404ba9cc25a8f"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a70aa0a4930465ef1fe4404ba9cc25a8f">ydlidar::CSimpleSocket::EnableNagleAlgoritm</a></div><div class="ttdeci">bool EnableNagleAlgoritm()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:391</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html">ydlidar::CSimpleSocket</a></div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:114</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a30e149bbbadcdd34ceb93084abbf3de6"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a30e149bbbadcdd34ceb93084abbf3de6">ydlidar::CSimpleSocket::SocketInvalidSocket</a></div><div class="ttdoc">Invalid socket handle. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:140</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a09e8344057c248952650cb408c791520"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a09e8344057c248952650cb408c791520">ydlidar::CSimpleSocket::SetSocketError</a></div><div class="ttdeci">void SetSocketError(CSimpleSocket::CSocketError error)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:554</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a5b7672c71bc8d8431d36974b946103d7"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a5b7672c71bc8d8431d36974b946103d7">ydlidar::CSimpleSocket::Shutdown</a></div><div class="ttdeci">virtual bool Shutdown(CShutdownMode nShutdown)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:523</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a21794c9689ccf683d069c11f2d8317cf"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a21794c9689ccf683d069c11f2d8317cf">ydlidar::CSimpleSocket::SocketFirewallError</a></div><div class="ttdoc">Firewall rules forbid connection. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:151</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a44eae3572de12463261d8db6afc61093"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a44eae3572de12463261d8db6afc61093">ydlidar::CSimpleSocket::SocketError</a></div><div class="ttdoc">Generic socket error translates to error below. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:138</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a5633e7100666e890451ca3d93211e369"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a5633e7100666e890451ca3d93211e369">ydlidar::CSimpleSocket::m_pBuffer</a></div><div class="ttdeci">uint8_t * m_pBuffer</div><div class="ttdoc">number of last error </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:596</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a78257e60b158e889953b3002842b2225"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a78257e60b158e889953b3002842b2225">ydlidar::CSimpleSocket::GetConnectTimeoutUSec</a></div><div class="ttdeci">int32_t GetConnectTimeoutUSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:342</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a3ea11ae9ab50c35a50adcac1e793f3b0"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a3ea11ae9ab50c35a50adcac1e793f3b0">ydlidar::CSimpleSocket::m_nBytesReceived</a></div><div class="ttdeci">int32_t m_nBytesReceived</div><div class="ttdoc">socket type - UDP, TCP or RAW </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:600</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_acefd54fe713934a5b4ba634f044c3fba"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#acefd54fe713934a5b4ba634f044c3fba">ydlidar::CSimpleSocket::m_addr</a></div><div class="ttdeci">std::string m_addr</div><div class="ttdoc">error file descriptor set </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:620</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a96f837fb21ff5b902578aec851d878d7"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a96f837fb21ff5b902578aec851d878d7">ydlidar::CSimpleSocket::m_nSocketDomain</a></div><div class="ttdeci">int32_t m_nSocketDomain</div><div class="ttdoc">size of internal send/receive buffer </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:598</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a0f912fad7557934ee8a696acd1808085"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a0f912fad7557934ee8a696acd1808085">ydlidar::CSimpleSocket::m_stClientSockaddr</a></div><div class="ttdeci">struct sockaddr_in m_stClientSockaddr</div><div class="ttdoc">server address </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:609</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a7eae391e0dcbafd740488b9a269c8eee"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eee">ydlidar::CSimpleSocket::CShutdownMode</a></div><div class="ttdeci">CShutdownMode</div><div class="ttdoc">Defines the three possible states for shuting down a socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:117</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a258dbbc96bc663d9ca0c15bfb54d1406"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a258dbbc96bc663d9ca0c15bfb54d1406">ydlidar::CSimpleSocket::m_nBytesSent</a></div><div class="ttdeci">int32_t m_nBytesSent</div><div class="ttdoc">number of bytes received </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:601</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a82110576384fa8d09439621eeff8facc"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a82110576384fa8d09439621eeff8facc">ydlidar::CSimpleSocket::GetServerAddr</a></div><div class="ttdeci">const char * GetServerAddr()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:486</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a43c5eccc15f81ce9cf4ca91dd306e71a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a43c5eccc15f81ce9cf4ca91dd306e71a">ydlidar::CSimpleSocket::SocketEunknown</a></div><div class="ttdoc">Unknown error please report to mark@carrierlabs.com. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:156</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a89c5a0ceb502df3b9e54982424c1d2ef"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a89c5a0ceb502df3b9e54982424c1d2ef">ydlidar::CSimpleSocket::m_stServerSockaddr</a></div><div class="ttdeci">struct sockaddr_in m_stServerSockaddr</div><div class="ttdoc">send timeout </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:608</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8c373c3f300e588ea048773cb1457447"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8c373c3f300e588ea048773cb1457447">ydlidar::CSimpleSocket::SetSocketDscp</a></div><div class="ttdeci">bool SetSocketDscp(int nDscp)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:270</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a7eae391e0dcbafd740488b9a269c8eeeadc8fe9b07e02af335349800cb62390f2"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeadc8fe9b07e02af335349800cb62390f2">ydlidar::CSimpleSocket::Both</a></div><div class="ttdoc">Shutdown both active and passive sockets. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:121</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482ad960e4fd8ecee3c5fa5a8142263c0699"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad960e4fd8ecee3c5fa5a8142263c0699">ydlidar::CSimpleSocket::SocketInvalidSocketBuffer</a></div><div class="ttdoc">The receive buffer point outside the process&amp;#39;s address space. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:152</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482ac71c28b4f21becf7e75da8e7c08f734c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac71c28b4f21becf7e75da8e7c08f734c">ydlidar::CSimpleSocket::SocketProtocolError</a></div><div class="ttdoc">Invalid protocol for operation. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:150</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a2d32e0547dc9c03308b7af0948a66fef"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a2d32e0547dc9c03308b7af0948a66fef">ydlidar::CSimpleSocket::m_nFlags</a></div><div class="ttdeci">uint32_t m_nFlags</div><div class="ttdoc">number of bytes sent </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:602</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a17b8048b915d6429415d2014f7b3329d"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a17b8048b915d6429415d2014f7b3329d">ydlidar::CSimpleSocket::SetNonblocking</a></div><div class="ttdeci">bool SetNonblocking(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:855</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a0601177c57fbb8080bcef0ca20d3f2af"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a0601177c57fbb8080bcef0ca20d3f2af">ydlidar::CSimpleSocket::GetReceiveTimeoutUSec</a></div><div class="ttdeci">int32_t GetReceiveTimeoutUSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:372</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a9a0d712e549884b71a2784a1e3ed6396"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a9a0d712e549884b71a2784a1e3ed6396">ydlidar::CSimpleSocket::GetSocketType</a></div><div class="ttdeci">CSocketType GetSocketType()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:463</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ad5725db3e331a9c209ee28588e732d96"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ad5725db3e331a9c209ee28588e732d96">ydlidar::CSimpleSocket::m_stLinger</a></div><div class="ttdeci">struct linger m_stLinger</div><div class="ttdoc">multicast group to bind to </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:611</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aa23681b9ebd4727e003235da8d0b8bf8"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aa23681b9ebd4727e003235da8d0b8bf8">ydlidar::CSimpleSocket::BindInterface</a></div><div class="ttdeci">bool BindInterface(const char *pInterface)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:220</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ae51c4b3a445b2c1d997328d7f1234db4"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ae51c4b3a445b2c1d997328d7f1234db4">ydlidar::CSimpleSocket::Flush</a></div><div class="ttdeci">bool Flush()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:539</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a96f15f994bfb576630e2c070ec8dd9da"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a96f15f994bfb576630e2c070ec8dd9da">ydlidar::CSimpleSocket::Send</a></div><div class="ttdeci">virtual int32_t Send(const uint8_t *pBuf, size_t bytesToSend)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:414</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a5cac43bde00d9d551df09adf18055f94"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a5cac43bde00d9d551df09adf18055f94">ydlidar::CSimpleSocket::SetOptionLinger</a></div><div class="ttdeci">bool SetOptionLinger(bool bEnable, uint16_t nTime)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:705</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a3931df9cb5a1e8e9f113f40918e23fe6"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a3931df9cb5a1e8e9f113f40918e23fe6">ydlidar::CSimpleSocket::GetReceiveTimeoutSec</a></div><div class="ttdeci">int32_t GetReceiveTimeoutSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:365</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0bafcae5434c7863157bdfd65328b5df060"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0bafcae5434c7863157bdfd65328b5df060">ydlidar::CSimpleSocket::SocketTypeInvalid</a></div><div class="ttdoc">Invalid socket type. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:127</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482ac6918e17bc0cae682c3db90dc105f7b2"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ac6918e17bc0cae682c3db90dc105f7b2">ydlidar::CSimpleSocket::SocketTimedout</a></div><div class="ttdoc">Timed out while attempting operation. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:144</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a220ea5b192f922d27c0598db9032687c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a220ea5b192f922d27c0598db9032687c">ydlidar::CSimpleSocket::GetMulticast</a></div><div class="ttdeci">bool GetMulticast()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:397</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aa77bc8daa8eaca86d52ba2217d0fbb21"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aa77bc8daa8eaca86d52ba2217d0fbb21">ydlidar::CSimpleSocket::SetSocketHandle</a></div><div class="ttdeci">void SetSocketHandle(SOCKET socket)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:560</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a9d6a7a5e3dcb742c07114d8a2dbf547f"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a9d6a7a5e3dcb742c07114d8a2dbf547f">ydlidar::CSimpleSocket::GetSocketDescriptor</a></div><div class="ttdeci">SOCKET GetSocketDescriptor()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:457</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a247125bf95be28d02f7f971d490c444f"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a247125bf95be28d02f7f971d490c444f">ydlidar::CSimpleSocket::m_nSocketType</a></div><div class="ttdeci">CSocketType m_nSocketType</div><div class="ttdoc">socket type PF_INET, PF_INET6 </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:599</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_afbb30cef80ae0faec59403184cab3bb1"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#afbb30cef80ae0faec59403184cab3bb1">ydlidar::CSimpleSocket::Close</a></div><div class="ttdeci">virtual bool Close(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:490</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0babc8a6304e4ecb9b329b2cb94cd0b26cd"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0babc8a6304e4ecb9b329b2cb94cd0b26cd">ydlidar::CSimpleSocket::SocketTypeTcp</a></div><div class="ttdoc">Defines socket as TCP socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:128</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a70dc7bedc18197071bf6e1f5f38f606b"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a70dc7bedc18197071bf6e1f5f38f606b">ydlidar::CSimpleSocket::SetOptionReuseAddr</a></div><div class="ttdeci">bool SetOptionReuseAddr()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:684</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a014e2ed02e7df2f68cd3376de2f5fb3a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a014e2ed02e7df2f68cd3376de2f5fb3a">ydlidar::CSimpleSocket::SetSocketType</a></div><div class="ttdeci">void SetSocketType(const CSocketType &amp;type)</div><div class="ttdoc">set socket descriptor </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:468</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aec6cb8b7c2f0ac279a31ccc003828d34"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aec6cb8b7c2f0ac279a31ccc003828d34">ydlidar::CSimpleSocket::SetSendWindowSize</a></div><div class="ttdeci">uint32_t SetSendWindowSize(uint32_t nWindowSize)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:520</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a7eae391e0dcbafd740488b9a269c8eeeaeb0f1c6410f5b9f5b03274e9d90592fd"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a7eae391e0dcbafd740488b9a269c8eeeaeb0f1c6410f5b9f5b03274e9d90592fd">ydlidar::CSimpleSocket::Receives</a></div><div class="ttdoc">Shutdown passive socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:119</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482ad20b7ca3362a242d07be421b27788ebe"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ad20b7ca3362a242d07be421b27788ebe">ydlidar::CSimpleSocket::SocketInvalidPointer</a></div><div class="ttdoc">Pointer type supplied as argument is invalid. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:155</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a5684444ef284a45fad2fe5fb83d57f8c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a5684444ef284a45fad2fe5fb83d57f8c">ydlidar::CSimpleSocket::SocketInvalidAddress</a></div><div class="ttdoc">Invalid destination address specified. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:141</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0baa4b38ca3c891ff4c3f7e89d691f90a24"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0baa4b38ca3c891ff4c3f7e89d691f90a24">ydlidar::CSimpleSocket::SocketTypeRaw</a></div><div class="ttdoc">Provides raw network protocol access. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:132</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a17ea51e148357465a7b22a1fd36a0c80"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a17ea51e148357465a7b22a1fd36a0c80">ydlidar::CSimpleSocket::SocketConnectionRefused</a></div><div class="ttdoc">No server is listening at remote address. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:143</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a38211a5d3a9d33793a0b26eae5e0aea7"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a38211a5d3a9d33793a0b26eae5e0aea7">ydlidar::CSimpleSocket::SocketAddressInUse</a></div><div class="ttdoc">Address already in use. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:154</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a0ee13f2a8edcbf5aab5ad512cc35ad67"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a0ee13f2a8edcbf5aab5ad512cc35ad67">ydlidar::CSimpleSocket::DescribeError</a></div><div class="ttdeci">static const char * DescribeError(CSocketError err)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:1099</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a95270a1d3db9e0f14fb68c3d39b1b658"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a95270a1d3db9e0f14fb68c3d39b1b658">ydlidar::CSimpleSocket::m_errorFds</a></div><div class="ttdeci">fd_set m_errorFds</div><div class="ttdoc">read file descriptor set </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:618</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_af4fe45d2420148f74ec788bf25848513"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#af4fe45d2420148f74ec788bf25848513">ydlidar::CSimpleSocket::GetClientAddr</a></div><div class="ttdeci">const char * GetClientAddr()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:474</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482ae0baed56e8fff1a431ad0f2405f550ad"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482ae0baed56e8fff1a431ad0f2405f550ad">ydlidar::CSimpleSocket::SocketInvalidPort</a></div><div class="ttdoc">Invalid destination port specified. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:142</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ab78977157db65f4475d52f1c5086f54b"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ab78977157db65f4475d52f1c5086f54b">ydlidar::CSimpleSocket::m_bIsMulticast</a></div><div class="ttdeci">bool m_bIsMulticast</div><div class="ttdoc">is socket blocking </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:604</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ae50622a90672c5c697f2ec7a3a7eec06"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ae50622a90672c5c697f2ec7a3a7eec06">ydlidar::CSimpleSocket::Initialize</a></div><div class="ttdeci">virtual bool Initialize(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:189</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a2e600d679e03f1761a379765368b1f36"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a2e600d679e03f1761a379765368b1f36">ydlidar::CSimpleSocket::SocketInterrupted</a></div><div class="ttdoc">Call was interrupted by a signal that was caught before a valid connection arrived. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:148</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a748ad24b067f4675b778e580a7780279"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a748ad24b067f4675b778e580a7780279">ydlidar::CSimpleSocket::GetSendWindowSize</a></div><div class="ttdeci">uint32_t GetSendWindowSize()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:506</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a351356b98a5c4cfa87ec0805e88dfcb8"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a351356b98a5c4cfa87ec0805e88dfcb8">ydlidar::CSimpleSocket::SetReceiveWindowSize</a></div><div class="ttdeci">uint32_t SetReceiveWindowSize(uint32_t nWindowSize)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:513</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a80785e9658ecd6e118e9876bb222b074"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a80785e9658ecd6e118e9876bb222b074">ydlidar::CSimpleSocket::TranslateSocketError</a></div><div class="ttdeci">void TranslateSocketError(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:973</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a91843dc1e8c8026316bcc9e4617c014e"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a91843dc1e8c8026316bcc9e4617c014e">ydlidar::CSimpleSocket::DisableNagleAlgoritm</a></div><div class="ttdeci">bool DisableNagleAlgoritm()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:368</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a9802400ece5d39367bc97f8e17f36ee3"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a9802400ece5d39367bc97f8e17f36ee3">ydlidar::CSimpleSocket::m_stConnectTimeout</a></div><div class="ttdeci">struct timeval m_stConnectTimeout</div><div class="ttdoc">is the UDP socket multicast; </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:605</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a51c89ece94e5c0cd58f246307de8a440"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a51c89ece94e5c0cd58f246307de8a440">ydlidar::CSimpleSocket::SetBlocking</a></div><div class="ttdeci">bool SetBlocking(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:894</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aa72cb5915498b11a9cf1d43a3757499a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aa72cb5915498b11a9cf1d43a3757499a">ydlidar::CSimpleSocket::m_socketErrno</a></div><div class="ttdeci">CSocketError m_socketErrno</div><div class="ttdoc">socket handle </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:595</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a6f181044a6690b5c90c1a1223d77e013"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a6f181044a6690b5c90c1a1223d77e013">ydlidar::CSimpleSocket::GetConnectTimeoutSec</a></div><div class="ttdeci">int32_t GetConnectTimeoutSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:335</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a1192d975d7be1ad2561b186841a30fe1"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a1192d975d7be1ad2561b186841a30fe1">ydlidar::CSimpleSocket::SetConnectTimeout</a></div><div class="ttdeci">void SetConnectTimeout(int32_t nConnectTimeoutSec, int32_t nConnectTimeoutUsec=0)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:356</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a971aadd919b44db33240d9e66d002f22"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a971aadd919b44db33240d9e66d002f22">ydlidar::CSimpleSocket::SetSendTimeout</a></div><div class="ttdeci">bool SetSendTimeout(int32_t nSendTimeoutSec, int32_t nSendTimeoutUsec=0)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:657</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a60b20253d942326ef40f1fa999fa532c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a60b20253d942326ef40f1fa999fa532c">ydlidar::CSimpleSocket::m_bIsBlocking</a></div><div class="ttdeci">bool m_bIsBlocking</div><div class="ttdoc">socket flags </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:603</div></div>
<div class="ttc" id="class_c_stat_timer_html"><div class="ttname"><a href="class_c_stat_timer.html">CStatTimer</a></div><div class="ttdef"><b>Definition:</b> StatTimer.h:70</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aaa1240da9f56fa394555f1e89f53a437"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aaa1240da9f56fa394555f1e89f53a437">ydlidar::CSimpleSocket::GetSendTimeoutSec</a></div><div class="ttdeci">int32_t GetSendTimeoutSec(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:408</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a1ef4d2d55b89f12776c358ec1b0da5f6"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a1ef4d2d55b89f12776c358ec1b0da5f6">ydlidar::CSimpleSocket::SocketNotconnected</a></div><div class="ttdoc">Currently not connected. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:146</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a637ff7510be4ea144a3a4d062260a6a9"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a637ff7510be4ea144a3a4d062260a6a9">ydlidar::CSimpleSocket::Receive</a></div><div class="ttdeci">virtual int32_t Receive(int32_t nMaxBytes=1, uint8_t *pBuffer=0)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:732</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a73629951a9557f9f1c574191f1e1003c"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a73629951a9557f9f1c574191f1e1003c">ydlidar::CSimpleSocket::m_stSendTimeout</a></div><div class="ttdeci">struct timeval m_stSendTimeout</div><div class="ttdoc">receive timeout </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:607</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a10ec98a6f67603f972084b5a6ba02b16"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a10ec98a6f67603f972084b5a6ba02b16">ydlidar::CSimpleSocket::GetTotalTimeMs</a></div><div class="ttdeci">uint32_t GetTotalTimeMs()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:434</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a89dc97d81d75164b88c08c9cfa96298a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a89dc97d81d75164b88c08c9cfa96298a">ydlidar::CSimpleSocket::IsNonblocking</a></div><div class="ttdeci">bool IsNonblocking(void)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:275</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482a8f09072cc1be7857d94f4481a0ed40b2"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482a8f09072cc1be7857d94f4481a0ed40b2">ydlidar::CSimpleSocket::SocketSuccess</a></div><div class="ttdoc">No socket error. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:139</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a95f4d0ff2f546f6b082ddfb4e7107ba8"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a95f4d0ff2f546f6b082ddfb4e7107ba8">ydlidar::CSimpleSocket::SetReceiveTimeout</a></div><div class="ttdeci">bool SetReceiveTimeout(int32_t nRecvTimeoutSec, int32_t nRecvTimeoutUsec=0)</div><div class="ttdef"><b>Definition:</b> SimpleSocket.cpp:629</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_aba125f0248c625f1eb339dab9053b7dc"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#aba125f0248c625f1eb339dab9053b7dc">ydlidar::CSimpleSocket::GetTotalTimeUsec</a></div><div class="ttdeci">uint32_t GetTotalTimeUsec()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:440</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a30314453fd304767763767da7cb5c482"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a30314453fd304767763767da7cb5c482">ydlidar::CSimpleSocket::CSocketError</a></div><div class="ttdeci">CSocketError</div><div class="ttdoc">Defines all error codes handled by the CSimpleSocket class. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:136</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a564833529baaa1d51af1429d3dcf8688"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a564833529baaa1d51af1429d3dcf8688">ydlidar::CSimpleSocket::m_stRecvTimeout</a></div><div class="ttdeci">struct timeval m_stRecvTimeout</div><div class="ttdoc">connection timeout </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:606</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a8ac1428be55f3b5128d122b90c63ef0ba75043b038b2675b576e45beaabee7208"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a8ac1428be55f3b5128d122b90c63ef0ba75043b038b2675b576e45beaabee7208">ydlidar::CSimpleSocket::SocketTypeUdp</a></div><div class="ttdoc">Defines socket as UDP socket. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:129</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_a5ddc43e6d8f08a169d9950b7755ae6e2"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#a5ddc43e6d8f08a169d9950b7755ae6e2">ydlidar::CSimpleSocket::m_writeFds</a></div><div class="ttdeci">fd_set m_writeFds</div><div class="ttdoc">internal statistics. </div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:616</div></div>
<div class="ttc" id="classydlidar_1_1_c_simple_socket_html_ade340bc665e64678c122f51d0799db9a"><div class="ttname"><a href="classydlidar_1_1_c_simple_socket.html#ade340bc665e64678c122f51d0799db9a">ydlidar::CSimpleSocket::GetServerPort</a></div><div class="ttdeci">uint16_t GetServerPort()</div><div class="ttdef"><b>Definition:</b> SimpleSocket.h:492</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
